版本从0.12迁移到0.13


架构变化

  • NW.js作为Chrome内部应用运行 . 所有chrome.*平台的APIs和特性都可以在NW应用中使用 . URL默认使用的协议由file://更改为chrome-extension:// . chrome-extension://协议更换0.12版本中的app:// .
  • NW中所有的AIPs , 包括require()nw.gui转移到nw对象中 . 然而 , NW提供一个内部封装包兼容0.12版本应用 . 0.14及后续版本中同样可以使用nw.gui , 但建议使用nw对象 .
  • 0.12及以前版本中 , Node.js环境放入后台页的DOM环境中 , 为了不同窗口之间能够共享 . 不同的是 , 0.13版本中 , Node环境中能够访问所有DOM特性以及chrome.*平台APIs .
  • 默认独立环境模式中需要打开后台页开发工具进行调试 , 参考开发工具与调试 .
  • 0.12版本中 , 应用通过JS或者HTML进入 , 但Chrome内部应用首窗被认为通过后台运行JS启动 . 如果在package.json中通过"main"字段指定加载首页 , NW将使用默认JS打开首窗 .
  • NW.js在混合环境模式下运行(使用--mixed-context参数启动NW.js) , nw.*映射window.* . 该模式下不能在框架(frames)和窗体(windows)之间分享变量 . 如果过于依赖分享变量的特性将不能开启混合环境模式 .

Node.js变化

  • Node.js最后构建在6.x版本 . 检查NPM模块 , 确认支持Node.js 6.x版本 , 特别是本地模块 . 本地模块列表迁移到最新版本 , 可以使用NaN 2 .
  • process.versions[nw]提供获取NW版本信息 , process.versions[node-webkit]将不再使用 .

API变化

构造方式

  • 不同的构造方式有不同的APIs设置以及不同的能力 . 参考构造方式可以选择正确的方式构造 .

快捷键

  • Mac OS X系统中不能Ctrl映射到快捷键 . 0.13版本中支持通过平台支持命令修改 . 这样需要了解系统并正确的注册以及使用快捷键 . 参考快捷键

菜单

  • 0.12版本中 , Mac系统默认的菜单栏中的菜单项包括: app-name, Edit and Window .
  • Mac系统中 , 修改应用菜单名需要修改nwjs.app/Contents/Resources/en.lproj/InfoPlist.strings而不是nwjs.app/Contents/Info.plist . 参考自定义菜单 .

配置格式

  • single-instance弃用并且一直为true . 应用不能使用多例 , 除非通过--user-data-dir使用不同的用户数据目录 . 首例可以使用open事件通知运行第二例 .
  • toolbar弃用并且一直为false . 传统工具条将不能使用 , 包括重加载按钮 , 地址栏以及工具按钮 . 应用可以使用win.reload()win.reloadDev()模拟重加载按钮功能 .
  • no-edit-menu弃用 .
  • snapshot弃用 . 应用可以使用win.evalNWBin()代替 .
  • node-remote的格式更改为通过Chrome扩展中match patterns数组使用 .
  • package.json或者Window.open()参数中 , 窗口相关参数always-on-top, visible-on-all-workspaces, new-instance, inject-js-startinject-js-end重命名为always_on_top, visible_on_all_workspaces, new_instance, inject_js_startinject_js_end
  • 命令行参数--data-path更换为--user-data-dir .

Window 窗口

Screen 屏幕

  • id通过added, orderchanged, namechanged, thumbnailchanged注册后进行获取 , 传入getUserMedia前 , 可以使用registerStream(id)获取注册的id . 参考 概要 .

已知问题

  • Linux系统中 , nw.Window.open()参数中resizable将不起作用 .
  • nw.WindowreloadDev()isDevToolsOpen()不支持 .
  • App.quit()不会触发nw.Window事件closed .
  • nw.Windowdevtools-closed事件不支持 .
  • as_desktop参数不支持 .
  • package.json中的webkit.{plugin|java|page-cache}参数不支持 , 插件默认开启 .
  • <iframe><iframe>属性不支持 .
  • MenuItemtooltip属性不支持 .
  • nw.App.setCrashDumpDir()不支持 , 崩溃机制相关信息保存到app-data-path/Crash Reports目录下 .